use tokio::task;

#[tokio::main]
    async fn main() {

    let block_task = task::spawn_blocking(|| {
        println!("block_task run");
        std::thread::sleep(std::time::Duration::from_secs(3));
        println!("block_task end");
    });

    // println!("main run1");
    // std::thread::sleep(std::time::Duration::from_secs(3));
    // println!("main run2");

    let task = tokio::spawn(async {
        println!("task1 run");
        std::thread::sleep(std::time::Duration::from_secs(3));
        println!("task1 end");
    });
    //
    block_task.await.unwrap();
    task.await.unwrap();
    println!("main run3");
}